﻿#define _CRT_SECURE_NO_WARNINGS 1

//        flag标记的作用以及代码优化，还有系统相关函数，关机程序

//#include <stdio.h>
//#include <math.h>
//
//int main()
//{
//	int i = 0;
//	for (i = 9;i <= 200;i += 2)
//	{
//		int j = 0;
//		int flag = 1;
//		for (j = 2; j <= sqrt(i);j++)
//		{
//			if (i % j == 0)
//			{
//				flag = 0;
//				break;
//			}
//		}
//		if (flag == 1)
//			printf("%d\n", i);
//	}
//
//		return 0;
//}
//以下是对代码中 flag 变量作用的详细解释：
//整体思路
//这段代码主要是用于找出一定范围内的素数。 flag 变量在这里起到一个/*标记的作用*/ ，用于记录当前正在检查的数 i 是否为素数。
//
//
//具体分析
//初始化 flag 
//在外部 for 循环（ for(i = 9; i <= 200; i += 2) ）内，每次开始检查一个新的数 i 时，都会先将 flag 初始化为 1 ，表示假设当前的数 i 是素数。
//
//int flag = 1;  //假设i是素数
//
//内部循环检查是否为素数
//内部 for 循环（ for(j = 2; j <= sqrt(i); j++) ）用于检查数 i 是否能被 2 到 sqrt(i) 之间的数整除。
//如果 i 能被 j 整除（即 i% j == 0 ），说明 i 不是素数，此时将 flag 设为 0 ，并通过 break 跳出内部循环，因为一旦发现一个约数就足以确定它不是素数了，无需再继续检查。
//
//if (i % j == 0)
//{
//	flag = 0;  //i不是素数
//	break;
//}
//
//根据 flag 的值输出结果
//在内部循环结束后，通过检查 flag 的值来决定是否输出 i 。如果 flag 仍为 1 ，说明在 2 到 sqrt(i) 之间没有找到能整除 i 的数，即 i 是素数，于是输出 i 。
//
//if (flag == 1)
//printf("%d\n", i);
//
//总结
//flag 变量在整个程序中起到了一个标记和判断的作用，通过它来记录和判断每个数 i 是否为素数，从而决定是否将其输出。这种使用标记变量的方法在很多算法中都很常见，
//用于在循环或其他复杂逻辑中记录某种状态或条件是否满足。






//写一个关机程序
//1. 程序运行起来后，电脑在1分钟内关机
//2. 但是输入：我是猪，就取消关机
//
//system 函数：执行系统命令
//stdlib.h
//strcmp 是专门用来比较两个字符串的内容的
//                                       strcmp函数返回0，表示两个字符串相等
//string.h
//
//            !!!!!!    goto 语句
//int main()
//{
//flag:
//	printf("hehe\n");
//	goto flag;
//	return 0;
//}

//#include <stdio.h>
//#include <string.h>
//#include <stdlib.h>
//
//int main()
//{
//	char input[20] = {0};
//	system("shutdown -s -t 60");
//again:
//	printf("请注意，你的电脑在1分钟内关机，如果输入“我是猪”,就取消关机\n");
//	scanf("%s", input); //数组名本来就是地址
//	if (strcmp(input, "我是猪") == 0)  //两个字符串比较大小，不能使用==，应该使用strcmp来比较
//	{
//		system("shutdown -a");//取消关机
//	}
//	else
//	{
//		goto again;
//	}
//	return 0;
//}
//以下是对这段C语言代码的分析：
//第一段代码
//
//#include <stdio.h>
//#include <string.h>
//#include <stdlib.h>
//
//int main()
//{
//flag:
//    printf("hehe\n");
//    goto flag;
//    return 0;
//}
//
//原理分析
//这段代码使用了 goto 语句实现了一个无限循环。 goto 语句跳转到标记为 flag 的位置，
//不断打印 hehe ，因为没有终止条件，所以这是一个！！！！！！！！死循环。
//它包含了必要的头文件 <stdio.h> 用于输入输出操作、 <string.h> 用于字符串操作
//（虽然这里没用到）、 <stdlib.h> 用于通用工具函数（如 system 函数等）。
//第二段代码
//
//#include <stdlib.h>
//#include <string.h>
//
//int main()
//{
//    char input[20] = { 0 };
//    system("shutdown -s -t 60");  // 设定电脑在60秒后关机
//
//again:
//    printf("请注意，你的电脑在1分钟内关机。如果输入“我是猪”，就取消关机\n");
//    scanf("%s", input);  // 获取用户输入
//    if (strcmp(input, "我是猪") == 0)  // 比较用户输入和“我是猪”字符串
//        system("shutdown -a");  // 取消关机
//    else
//        goto again;  // 如果输入不正确，再次提示
//    return 0;
//}
//
//原理分析
//首先使用 system("shutdown -s -t 60");  命令设置电脑在60秒后关机。
//然后进入一个循环（通过 goto 和 again 标签实现），提示用户输入字符串“我是猪”。
//使用 scanf 获取用户输入的字符串，然后通过 strcmp 函数比较用户输入的字符串和“我是猪”是否相等。
//如果相等，使用 system("shutdown -a"); 取消关机操作；如果不相等，则通过 goto again; 再次提示用户输入，直到输入正确或者用户手动终止程序等。
//注意事项
//潜在风险
//这类代码如果被恶意使用，比如设置关机时间很短且没有合理的提示和取消机制，可能会给用户带来困扰甚至数据丢失风险（如果用户因突然关机导致未保存的工作丢失等）。
//此外，在实际编程中，应尽量避免使用 goto 语句，因为它可能会使程序的逻辑结构变得混乱难以维护，
// 通常可以用 while 、 for 等循环结构以及 break 、 continue 等语句来实现更清晰的逻辑。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
	char ch[20] = { 0 };
	system("shutdown -s -t 600");
	again:
	printf("电脑将在600秒后关机，如果输入“我是猪”就取消关机\n");
	
	while (1)
	{
		scanf("%s", ch);
		if (strcmp(ch, "我是猪") == 0)//注意对比函数，用逗号隔开，汉字是字符串，用双引号，而ch是数组，不用＋引号
		{
			system("shutdown -a");
		}
		else
		{
			goto again;
		}
	}
	return 0;


}

//在C语言中， system("shutdown -t -s -60");  这条语句用于执行系统命令来实现特定功能。
//具体含义如下：
//system  函数
//这是C语言中的一个库函数，用于在程序中执行系统命令。它包含在  <stdlib.h>  头文件中。当程序调用  system  函数并传入一个字符串参数时，该函数会在操作系统的命令行环境中执行这个字符串所代表的命令。
//shutdown - t - s - 60  命令
//shutdown  ：这是Windows系统中的关机命令。
//- t  ：指定关机前的超时时间（以秒为单位）。在这里，  - t - s - 60  表示在60秒后执行关机操作。
//- s  ：表示关机（shutdown）操作。如果是 - r  则表示重启（restart）操作。
//代码示例中的运用
//以下是代码示例：
//
//#include <stdio.h>
//#include <stdlib.h>
//
//int main()
//{
//	printf("电脑将在60秒后关机，输入“我是猪”就取消关机\n");
//	system("shutdown -t -s -60");  // 执行关机命令，60秒后关机
//
//	// 这里可以添加获取用户输入并判断是否取消关机的逻辑
